package com.gopay.common.user.manager;

import com.gopay.common.domain.cust.CustSmsAc;
import com.gopay.common.exception.GopayException;

/**
 * @ClassName: CustSmsAcManager
 * @Description: 短信认证 接口
 * @author lx
 * @date 2016年8月16日 上午10:42:10
 */

public interface CustSmsAcManager {
    /**
     * @Description: 通过custId 获取企业管理员 短信认证对象
     * @param custId
     * @return
     * @author lx
     */
    CustSmsAc getCustSmsAcByCustId(String custId);

    /**
     * @Description: 通过 custId 获取 当前商户的短信认证状态
     * @param custId
     * @return
     * @author lx
     */
    String getCustSmsLockStatByCustId(String custId);

    /**
     * @Description: 修改短信认证对象
     * @param custSmsAc
     * @author lx
     */
    void modifyCustSmsAc(CustSmsAc custSmsAc);
    
	/**
	 * @Description: 根据custId获取企业短信验证码认证的状态
	 * @param custId	企业的custId
	 * @return			短信验证码认证开启状态 ,01-开启，02-关闭,若为null，代表获取失败
	 * @Author zyt
	 */
	public String getSmsAcStat(String custId);
	
	/**
	 * @Description: 			开启custId对应的企业的短信验证码认证
	 * @param custId			要开通短信验证码服务的企业的custId
	 * @param operId			操作员的operId（如果operId不为999，则认为不是企业管理员操作，抛出异常）
	 * @throws GopayException	开启短信验证码认证权限时抛出的异常信息
	 * @Author zyt
	 */
	public void openSmsAc(String custId, String operId) throws GopayException;
	
	/**
	 * @Description: 关闭custId对应的企业的短信验证码认证
	 * @param custId	企业的custId
	 * @param operId		操作员的operId（区分是企业管理员自己关闭服务，还是国付宝控制台关闭）
	 * @throws GopayException	关闭短信验证码认证权限时抛出的异常信息
	 * @Author zyt
	 */
	public void closeSmsAc(String custId, String operId) throws GopayException;
	
	/**
	 * @Description: userId对应的（企业）用户是否有权限操作短信验证码认证（开启，关闭）
	 * @param userId	企业登陆人员的userId
	 * @return			0：否  1：是
	 * @Author zyt
	 */
	public boolean hasSmsAcPermission(String userId);
	
	/**
	 * 
	 * @Description: 控制custId的企业在portal展示短信认证 
	 * @param custId	企业登陆人员的userId
	 * @Author zyt
	 */
	public void displaySmsAc(String custId) throws GopayException;
	
	/**
	 * 
	 * @Description: 	控制custId的企业在portal隐藏短信认证 
	 * @param custId	企业登陆人员的userId
	 * @Author zyt
	 */
	public void hideSmsAc(String custId) throws GopayException;
	
	/**
	 * 
	 * @Description: 	查询custId对应的企业是否显示短信验证服务,
	 * 					只有在该custId对应的企业存在，且该字段为隐藏，返回false，其他情况均返回true
	 * @param custId	企业的custId
	 * @return 			true:显示； false:不显示
	 * @author zyt
	 */
	public boolean isDisplaySmsAc(String custId);
	
	/**
	 * @Description: 	根据custId获取企业短信验证码认证的展示状态
	 * @param custId	企业的custId
	 * @return			短信验证码认证展示状态 ,01-展示，02-隐藏,若为null，代表获取失败
	 * @Author zyt
	 */
	public String getSmsAcDisplayStat(String custId);
    
}
